package org.project.single.utils;

import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import org.project.single.pojo.dto.auth.AuthUserInfo;
import org.project.single.pojo.dto.auth.UserInfoAuthDto;

/**
 * 用户工具
 */
public class LoginHelper {
    /**
     * 缓存用户信息key名称
     */
    private static final String AUTH_USER_INFO_KEY = "AUTH_USER_INFO";

    public static String login(UserInfoAuthDto userInfoAuthDto){
        StpUtil.login(userInfoAuthDto.getId());
        StpUtil.getTokenSession()
                .set(AUTH_USER_INFO_KEY,new AuthUserInfo(userInfoAuthDto));
        return StpUtil.getTokenValue();
    }

    /**
     * 获取登录用户信息
     * @return
     */
    public static AuthUserInfo getUserInfo(){
        return (AuthUserInfo)(StpUtil.getTokenSession().get(AUTH_USER_INFO_KEY));
    }

    /**
     * 获取用户身份唯一标识
     * @return
     */
    public static String getUserKey(){
        AuthUserInfo userInfo = getUserInfo();
        if (ObjectUtil.isNull(userInfo)){
            return null;
        }else{
            return userInfo.loginUserKey();
        }
    }
}
